package Classes;

import java.io.Serializable;
import javax.swing.Icon;

/**
 * Classe para representar um livro.
 *
 * @author Andreza Raquel
 *
 */
public class Livro extends Item implements Serializable {

    private String autores, isbn;
    private Icon capa;

    /**
     * Construtor da classe
     *
     * @param proprietario Proprietario do item
     * @param autores Autores do livro
     * @param isbn ISBN do livro
     * @param capa Capa do livro
     */
    public Livro(Usuario proprietario, String autores,
            String titulo, String isbn, Icon capa) {
        super(proprietario, titulo);
        this.autores = autores;
        this.isbn = isbn;
        this.capa = capa;
    }

    /**
     * @return Os autores do livro
     */
    public String getAutores() {
        return autores;
    }

    /**
     * Define novos autores pro livro
     *
     * @param novosAutores Os novos autores do livro
     */
    public void setAutores(String novosAutores) {
        autores = novosAutores;
    }
    
    /**
     * @return O ISBN do livro
     */
    public String getIsbn() {
        return isbn;
    }

    /**
     * Define um novo ISBN pro livro
     *
     * @param novoIsbn O novo ISBN do livro
     */
    public void setIsbn(String novoIsbn) {
        isbn = novoIsbn;
    }

    /**
     * @return A capa do livro
     */
    public Icon getCapa() {
        return capa;
    }

    /**
     * Define uma nova capa pro livro
     *
     * @param novaCapa A nova capa do livro
     */
    public void setCapa(Icon novaCapa) {
        capa = novaCapa;
    }

    @Override
    public String toString() {
        return "Autor(es): " + autores + " | " + super.toString();
    }

    @Override
    public boolean equals(Object obj) {
        if (!(obj instanceof Livro)) {
            return false;
        }
        Livro livro = (Livro) obj;
        if (this.isbn.equals(livro.getIsbn())) {
            return true;
        }
        return false;
    }
}
